home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / other / ira_src / iragui.c < prev    next >
C/C++ Source or Header  |  1999-02-03  |  12KB  |  423 lines

  1. /*********************************************/
  2. /*                                           */
  3. /*       Designer (C) Ian OConnor 1994       */
  4. /*                                           */
  5. /*      Designer Produced C include file     */
  6. /*                                           */
  7. /*********************************************/
  8.  
  9. #include <exec/types.h>
  10. #include <libraries/locale.h>
  11. #include <exec/memory.h>
  12. #include <dos/dosextens.h>
  13. #include <intuition/screens.h>
  14. #include <intuition/intuition.h>
  15. #include <intuition/gadgetclass.h>
  16. #include <libraries/gadtools.h>
  17. #include <diskfont/diskfont.h>
  18. #include <utility/utility.h>
  19. #include <graphics/gfxbase.h>
  20. #include <workbench/workbench.h>
  21. #include <graphics/scale.h>
  22. #include <clib/locale_protos.h>
  23. #include <clib/exec_protos.h>
  24. #include <clib/wb_protos.h>
  25. #include <clib/intuition_protos.h>
  26. #include <clib/gadtools_protos.h>
  27. #include <clib/graphics_protos.h>
  28. #include <clib/utility_protos.h>
  29. #include <string.h>
  30. #include <clib/diskfont_protos.h>
  31.  
  32. #include "iraGUI.h"
  33.  
  34.  
  35. ULONG BevelTags[] = 
  36.     {
  37.     (GTBB_Recessed), TRUE,
  38.     (GT_VisualInfo), 0,
  39.     (TAG_DONE)
  40.     };
  41.  
  42. struct Window *IRAPref0 = NULL;
  43. APTR IRAPref0VisualInfo;
  44. APTR IRAPref0DrawInfo;
  45. struct Gadget *IRAPref0GList;
  46. struct Gadget *IRAPref0Gadgets[18];
  47. UBYTE IRAPref0FirstRun = 0;
  48.  
  49. STRPTR Win0_Gad0Labels[] =
  50. {
  51.     (STRPTR)Win0_Gad0String0,
  52.     (STRPTR)Win0_Gad0String1,
  53.     (STRPTR)Win0_Gad0String2,
  54.     (STRPTR)Win0_Gad0String3,
  55.     (STRPTR)Win0_Gad0String4,
  56.     (STRPTR)Win0_Gad0String5,
  57.     NULL
  58. };
  59.  
  60. STRPTR Win0_Gad1Labels[] =
  61. {
  62.     (STRPTR)Win0_Gad1String0,
  63.     (STRPTR)Win0_Gad1String1,
  64.     NULL
  65. };
  66.  
  67. STRPTR Win0_Gad2Labels[] =
  68. {
  69.     (STRPTR)Win0_Gad2String0,
  70.     (STRPTR)Win0_Gad2String1,
  71.     NULL
  72. };
  73.  
  74. STRPTR IRAPref0_Gad15Labels[] =
  75. {
  76.     (STRPTR)IRAPref0_Gad15String0,
  77.     (STRPTR)IRAPref0_Gad15String1,
  78.     (STRPTR)IRAPref0_Gad15String2,
  79.     (STRPTR)IRAPref0_Gad15String3,
  80.     (STRPTR)IRAPref0_Gad15String4,
  81.     (STRPTR)IRAPref0_Gad15String5,
  82.     (STRPTR)IRAPref0_Gad15String6,
  83.     (STRPTR)IRAPref0_Gad15String7,
  84.     NULL
  85. };
  86.  
  87. ULONG IRAPref0GadgetTags[] =
  88.     {
  89.     (GTCY_Labels), (ULONG)&Win0_Gad0Labels[0],
  90.     (TAG_END),
  91.     (GTCY_Labels), (ULONG)&Win0_Gad1Labels[0],
  92.     (TAG_END),
  93.     (GTCY_Labels), (ULONG)&Win0_Gad2Labels[0],
  94.     (TAG_END),
  95.     (GTCB_Checked), TRUE,
  96.     (TAG_END),
  97.     (GTCB_Checked), TRUE,
  98.     (TAG_END),
  99.     (GTCB_Checked), TRUE,
  100.     (TAG_END),
  101.     (GTCB_Checked), TRUE,
  102.     (TAG_END),
  103.     (GTCB_Checked), TRUE,
  104.     (TAG_END),
  105.     (GTST_MaxChars), 16,
  106.     (STRINGA_Justification), 512,
  107.     (GA_TabCycle), FALSE,
  108.     (TAG_END),
  109.     (GTST_MaxChars), 16,
  110.     (STRINGA_Justification), 512,
  111.     (GA_TabCycle), FALSE,
  112.     (TAG_END),
  113.     (GTCY_Active), 7,
  114.     (GTCY_Labels), (ULONG)&IRAPref0_Gad15Labels[0],
  115.     (TAG_END),
  116.     (GTST_MaxChars), 16,
  117.     (STRINGA_Justification), 512,
  118.     (GA_Disabled), TRUE,
  119.     (GA_TabCycle), FALSE,
  120.     (TAG_END),
  121.     (GTST_MaxChars), 4,
  122.     (STRINGA_Justification), 512,
  123.     (GA_Disabled), TRUE,
  124.     (GA_TabCycle), FALSE,
  125.     (TAG_END),
  126.     (GT_Underscore), '_',
  127.     (TAG_END),
  128.     (GT_Underscore), '_',
  129.     (TAG_END),
  130.     (GT_Underscore), '_',
  131.     (TAG_END),
  132.     };
  133.  
  134. UWORD IRAPref0GadgetTypes[] =
  135.     {
  136.     CYCLE_KIND,
  137.     CYCLE_KIND,
  138.     CYCLE_KIND,
  139.     CHECKBOX_KIND,
  140.     CHECKBOX_KIND,
  141.     CHECKBOX_KIND,
  142.     CHECKBOX_KIND,
  143.     CHECKBOX_KIND,
  144.     CHECKBOX_KIND,
  145.     CHECKBOX_KIND,
  146.     STRING_KIND,
  147.     STRING_KIND,
  148.     CYCLE_KIND,
  149.     STRING_KIND,
  150.     STRING_KIND,
  151.     BUTTON_KIND,
  152.     BUTTON_KIND,
  153.     BUTTON_KIND,
  154.     };
  155.  
  156. struct NewGadget IRAPref0NewGadgets[] =
  157.     {
  158.     37, 2, 82, 13, (UBYTE*)Win0_Gad0String, &topaz800, Win0_Gad0, 1, NULL,  (APTR)&IRAPref0GadgetTags[0],
  159.     37, 18, 82, 13, (UBYTE*)Win0_Gad1String, &topaz800, Win0_Gad1, 1, NULL,  (APTR)&IRAPref0GadgetTags[3],
  160.     37, 34, 82, 13, (UBYTE*)Win0_Gad2String, &topaz800, Win0_Gad2, 1, NULL,  (APTR)&IRAPref0GadgetTags[6],
  161.     0, 75, 26, 11, (UBYTE*)IRAPref0_Gad3String, &topaz800, IRAPref0_Gad3, 2, NULL,  (APTR)&IRAPref0GadgetTags[9],
  162.     0, 89, 26, 11, (UBYTE*)IRAPref0_Gad4String, &topaz800, IRAPref0_Gad4, 2, NULL,  (APTR)&IRAPref0GadgetTags[12],
  163.     0, 61, 26, 11, (UBYTE*)IRAPref0_Gad5String, &topaz800, IRAPref0_Gad5, 2, NULL,  (APTR)&IRAPref0GadgetTags[15],
  164.     0, 103, 26, 11, (UBYTE*)IRAPref0_Gad6String, &topaz800, IRAPref0_Gad6, 2, NULL,  (APTR)&IRAPref0GadgetTags[18],
  165.     0, 117, 26, 11, (UBYTE*)IRAPref0_Gad7String, &topaz800, IRAPref0_Gad7, 2, NULL,  NULL,
  166.     0, 131, 26, 11, (UBYTE*)IRAPref0_Gad10String, &topaz800, IRAPref0_Gad10, 2, NULL,  NULL,
  167.     0, 145, 26, 11, (UBYTE*)IRAPref0_Gad11String, &topaz800, IRAPref0_Gad11, 2, NULL,  (APTR)&IRAPref0GadgetTags[21],
  168.     126, 2, 107, 13, (UBYTE*)IRAPref0_Gad13String, &topaz800, IRAPref0_Gad13, 2, NULL,  (APTR)&IRAPref0GadgetTags[24],
  169.     126, 18, 107, 13, (UBYTE*)IRAPref0_Gad14String, &topaz800, IRAPref0_Gad14, 2, NULL,  (APTR)&IRAPref0GadgetTags[31],
  170.     3, 171, 108, 13, (UBYTE*)IRAPref0_Gad15String, &topaz800, IRAPref0_Gad15, 2, NULL,  (APTR)&IRAPref0GadgetTags[38],
  171.     3, 186, 108, 13, (UBYTE*)IRAPref0_Gad16String, &topaz800, IRAPref0_Gad16, 2, NULL,  (APTR)&IRAPref0GadgetTags[43],
  172.     3, 202, 108, 13, (UBYTE*)IRAPref0_Gad17String, &topaz800, IRAPref0_Gad17, 2, NULL,  (APTR)&IRAPref0GadgetTags[52],
  173.     21, 225, 61, 13, (UBYTE*)IRAPref0_Gad18String, &topaz800, IRAPref0_Gad18, 16, NULL,  (APTR)&IRAPref0GadgetTags[61],
  174.     189, 226, 61, 13, (UBYTE*)IRAPref0_Gad19String, &topaz800, IRAPref0_Gad19, 16, NULL,  (APTR)&IRAPref0GadgetTags[64],
  175.     348, 225, 59, 13, (UBYTE*)IRAPref0_Gad20String, &topaz800, IRAPref0_Gad20, 16, NULL,  (APTR)&IRAPref0GadgetTags[67],
  176.     };
  177. UWORD IRAPref0ZoomInfo[4] = { 200, 0, 200, 25 };
  178.  
  179. struct Library *DiskfontBase = NULL;
  180. struct Library *GadToolsBase = NULL;
  181. struct GfxBase *GfxBase = NULL;
  182. struct IntuitionBase *IntuitionBase = NULL;
  183. struct LocaleBase *LocaleBase = NULL;
  184. struct Catalog *base_Catalog = NULL;
  185. STRPTR base_BuiltInLanguage = (STRPTR)"english";
  186. LONG base_Version = 0;
  187.  
  188. STRPTR base_Strings[] =
  189. {
  190.   (STRPTR)"MC68000",
  191.   (STRPTR)"MC68010",
  192.   (STRPTR)"MC68020",
  193.   (STRPTR)"MC68030",
  194.   (STRPTR)"MC68040",
  195.   (STRPTR)"MC68060",
  196.   (STRPTR)"NO FPU",
  197.   (STRPTR)"MC68882",
  198.   (STRPTR)"NO MMU",
  199.   (STRPTR)"MC68851",
  200.   (STRPTR)"A0",
  201.   (STRPTR)"A1",
  202.   (STRPTR)"A2",
  203.   (STRPTR)"A3",
  204.   (STRPTR)"A4",
  205.   (STRPTR)"A5",
  206.   (STRPTR)"A6",
  207.   (STRPTR)"No Base",
  208.   (STRPTR)"CPU",
  209.   (STRPTR)"FPU",
  210.   (STRPTR)"MMU",
  211.   (STRPTR)"Append address and data.",
  212.   (STRPTR)"Show hunkstructure.",
  213.   (STRPTR)"Scan for data/text and code.",
  214.   (STRPTR)"Load configfile.",
  215.   (STRPTR)"Put each section in its own file.",
  216.   (STRPTR)"Keep binary data.",
  217.   (STRPTR)"Leave empty hunks away.",
  218.   (STRPTR)"Offset to relocate at.",
  219.   (STRPTR)"Entry of code scanning.",
  220.   (STRPTR)"Base register",
  221.   (STRPTR)"Base address.",
  222.   (STRPTR)"Base section.",
  223.   (STRPTR)"Save",
  224.   (STRPTR)"Use",
  225.   (STRPTR)"Cancel",
  226.   (STRPTR)"IRA V1.05 Preferences",
  227. };
  228.  
  229. struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0, 0 };
  230.  
  231. void RendWindowIRAPref0( struct Window *Win, void *vi )
  232. {
  233. UWORD offx = Win->BorderLeft;
  234. UWORD offy = Win->BorderTop;
  235. if (Win != NULL) 
  236.     {
  237.     BevelTags[3] = (ULONG)vi;
  238.     DrawBevelBoxA( Win->RPort, 0+offx,0+offy,123,49, (struct TagItem *)(&BevelTags[2]));
  239.     DrawBevelBoxA( Win->RPort, 123+offx,0+offy,304,49, (struct TagItem *)(&BevelTags[2]));
  240.     DrawBevelBoxA( Win->RPort, 0+offx,169+offy,426,48, (struct TagItem *)(&BevelTags[2]));
  241.     }
  242. }
  243.  
  244. int OpenWindowIRAPref0( void )
  245. {
  246. struct Screen *Scr;
  247. UWORD offx, offy;
  248. UWORD loop;
  249. struct NewGadget newgad;
  250. struct Gadget *Gad;
  251. struct Gadget *Gad2;
  252. APTR Cla;
  253. if (IRAPref0FirstRun == 0)
  254.     {
  255.     IRAPref0FirstRun = 1;
  256.     for ( loop=0; loop<6; loop++)
  257.         Win0_Gad0Labels[loop] = GetString((LONG)Win0_Gad0Labels[loop]);
  258.     for ( loop=0; loop<2; loop++)
  259.         Win0_Gad1Labels[loop] = GetString((LONG)Win0_Gad1Labels[loop]);
  260.     for ( loop=0; loop<2; loop++)
  261.         Win0_Gad2Labels[loop] = GetString((LONG)Win0_Gad2Labels[loop]);
  262.     for ( loop=0; loop<8; loop++)
  263.         IRAPref0_Gad15Labels[loop] = GetString((LONG)IRAPref0_Gad15Labels[loop]);
  264.     }
  265. if (IRAPref0 == NULL)
  266.     {
  267.     Scr = LockPubScreen(NULL);
  268.     if (NULL != Scr)
  269.         {
  270.         offx = Scr->WBorLeft;
  271.         offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  272.         if (NULL != ( IRAPref0VisualInfo = GetVisualInfoA( Scr, NULL)))
  273.             {
  274.             if (NULL != ( IRAPref0DrawInfo = GetScreenDrawInfo( Scr)))
  275.                 {
  276.                 IRAPref0GList = NULL;
  277.                 Gad = CreateContext( &IRAPref0GList);
  278.                 for ( loop=0 ; loop<18 ; loop++ )
  279.                     if (IRAPref0GadgetTypes[loop] != 198)
  280.                         {
  281.                         CopyMem((char * )&IRAPref0NewGadgets[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  282.                         newgad.ng_VisualInfo = IRAPref0VisualInfo;
  283.                         newgad.ng_LeftEdge += offx;
  284.                         newgad.ng_TopEdge += offy;
  285.                         newgad.ng_GadgetText = GetString((LONG)newgad.ng_GadgetText);
  286.                         IRAPref0Gadgets[ loop ] = NULL;
  287.                         IRAPref0Gadgets[ newgad.ng_GadgetID - IRAPref0FirstID ] = Gad = CreateGadgetA( IRAPref0GadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  288.                         }
  289.                 for ( loop=0 ; loop<18 ; loop++ )
  290.                     if (IRAPref0GadgetTypes[loop] == 198)
  291.                         {
  292.                         IRAPref0Gadgets[ loop ] = NULL;
  293.                         Cla = NULL;
  294.                         if (Gad)
  295.                             IRAPref0Gadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, IRAPref0NewGadgets[ loop ].ng_GadgetText, IRAPref0NewGadgets[ loop ].ng_UserData );
  296.                         }
  297.                 if (Gad != NULL)
  298.                     {
  299.                     if (NULL != (IRAPref0 = OpenWindowTags( NULL, (WA_Left), 47,
  300.                                     (WA_Top), 176,
  301.                                     (WA_Width), 431+offx,
  302.                                     (WA_Height), 245+offy,
  303.                                     (WA_Title), (LONG)GetString(IRAPref0Title),
  304.                                     (WA_MinWidth), 150,
  305.                                     (WA_MinHeight), 25,
  306.                                     (WA_MaxWidth), 1200,
  307.                                     (WA_MaxHeight), 1200,
  308.                                     (WA_DragBar), TRUE,
  309.                                     (WA_DepthGadget), TRUE,
  310.                                     (WA_CloseGadget), TRUE,
  311.                                     (WA_Activate), TRUE,
  312.                                     (WA_Dummy+0x30), TRUE,
  313.                                     (WA_SmartRefresh), TRUE,
  314.                                     (WA_AutoAdjust), TRUE,
  315.                                     (WA_Gadgets), IRAPref0GList,
  316.                                     (WA_Zoom), IRAPref0ZoomInfo,
  317.                                     (WA_IDCMP),580,
  318.                                     (TAG_END))))
  319.                         {
  320.                         RendWindowIRAPref0(IRAPref0, IRAPref0VisualInfo );
  321.                         GT_RefreshWindow( IRAPref0, NULL);
  322.                         RefreshGList( IRAPref0GList, IRAPref0, NULL, ~0);
  323.                         UnlockPubScreen( NULL, Scr);
  324.                         return( 0L );
  325.                         }
  326.                     }
  327.                 FreeGadgets( IRAPref0GList);
  328.                 FreeScreenDrawInfo( Scr, IRAPref0DrawInfo );
  329.                 }
  330.             FreeVisualInfo( IRAPref0VisualInfo );
  331.             }
  332.         UnlockPubScreen( NULL, Scr);
  333.         }
  334.     }
  335. else
  336.     {
  337.     WindowToFront(IRAPref0);
  338.     ActivateWindow(IRAPref0);
  339.     return( 0L );
  340.     }
  341. return( 1L );
  342. }
  343.  
  344. void CloseWindowIRAPref0( void )
  345. {
  346. if (IRAPref0 != NULL)
  347.     {
  348.     FreeScreenDrawInfo( IRAPref0->WScreen, IRAPref0DrawInfo );
  349.     IRAPref0DrawInfo = NULL;
  350.     CloseWindow( IRAPref0);
  351.     IRAPref0 = NULL;
  352.     FreeVisualInfo( IRAPref0VisualInfo);
  353.     FreeGadgets( IRAPref0GList);
  354.     }
  355. }
  356.  
  357. int OpenLibs( void )
  358. {
  359. LocaleBase = (struct LocaleBase * )OpenLibrary((UBYTE *)"locale.library", 38);
  360. if ( NULL != (DiskfontBase = OpenLibrary((UBYTE *)"diskfont.library" , 36)))
  361.     if ( NULL != (GadToolsBase = OpenLibrary((UBYTE *)"gadtools.library" , 37)))
  362.         if ( NULL != (GfxBase = (struct GfxBase * )OpenLibrary((UBYTE *)"graphics.library" , 37)))
  363.             if ( NULL != (IntuitionBase = (struct IntuitionBase * )OpenLibrary((UBYTE *)"intuition.library" , 37)))
  364.                 return( 0L );
  365. CloseLibs();
  366. return( 1L );
  367. }
  368.  
  369. void CloseLibs( void )
  370. {
  371. if (NULL != DiskfontBase )
  372.     CloseLibrary( DiskfontBase );
  373. if (NULL != GadToolsBase )
  374.     CloseLibrary( GadToolsBase );
  375. if (NULL != GfxBase )
  376.     CloseLibrary( ( struct Library * )GfxBase );
  377. if (NULL != IntuitionBase )
  378.     CloseLibrary( ( struct Library * )IntuitionBase );
  379. if (NULL != LocaleBase )
  380.     CloseLibrary( ( struct Library * )LocaleBase );
  381. }
  382.  
  383. int OpenDiskFonts( void )
  384. {
  385.     int OKSoFar = 0;
  386. if (NULL == OpenDiskFont( &topaz800 ) )
  387.     OKSoFar = 1;
  388. return ( OKSoFar );
  389. }
  390.  
  391. STRPTR GetString(LONG strnum)
  392. {
  393.     if (base_Catalog == NULL)
  394.         return(base_Strings[strnum]);
  395.     return(GetCatalogStr(base_Catalog, strnum, base_Strings[strnum]));
  396. }
  397.  
  398. void ClosebaseCatalog(void)
  399. {
  400.     if (LocaleBase != NULL)
  401.         CloseCatalog(base_Catalog);
  402.     base_Catalog = NULL;
  403. }
  404.  
  405. void OpenbaseCatalog(struct Locale *loc, STRPTR language)
  406. {
  407.     LONG tag, tagarg;
  408.     if (language == NULL)
  409.         tag=TAG_IGNORE;
  410.     else
  411.         {
  412.         tag = OC_Language;
  413.         tagarg = (LONG)language;
  414.         }
  415.     if (LocaleBase != NULL  &&  base_Catalog == NULL)
  416.         base_Catalog = OpenCatalog(loc, (STRPTR) "base.catalog",
  417.                                             OC_BuiltInLanguage, base_BuiltInLanguage,
  418.                                             tag, tagarg,
  419.                                             OC_Version, base_Version,
  420.                                             TAG_DONE);
  421. }
  422.  
  423.